home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 2888 / 2888.xpi / content / addBookmarksOverlay.js next >
Text File  |  2008-04-26  |  7KB  |  219 lines

  1. var GMarksNameBox;
  2. var prefs = Components.classes["@mozilla.org/preferences-service;1"].
  3.                             getService(Components.interfaces.nsIPrefService).getBranch("gmarks.");
  4.  
  5. var strbundle = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Components.interfaces.nsIStringBundleService)
  6.                     .createBundle("chrome://gmarks/locale/gmarks.properties");
  7.  
  8. var GMS = Components.classes["@mozilla.org/gmarks;1"]
  9.                      .getService(Components.interfaces.nsIGMarksService).wrappedJSObject;
  10.  
  11. var toBoth;
  12. var closeWindow=false;
  13. var showBookmarksTree=false;
  14. function gmarksAddBookmarkLoad(){//Note, startup is called first
  15.     var show=false;
  16.   var appInfo = Components.classes["@mozilla.org/xre/app-info;1"]
  17.                       .getService(Components.interfaces.nsIXULAppInfo);
  18.   var versionChecker = Components.classes["@mozilla.org/xpcom/version-comparator;1"]
  19.                                  .getService(Components.interfaces.nsIVersionComparator);
  20.   var FF3 = (versionChecker.compare(appInfo.version, "3.0a") >= 0);
  21.     if (gArg.feedURL) show=false;
  22.     else if (gArg.bNeedKeyword) show=false;
  23.     else show=prefs.getBoolPref('ctrlD') && !FF3;
  24.     //show=false;
  25.     if (show){
  26.         toBoth=document.getElementsByTagName("checkbox")[0];
  27.         var grids=document.getElementsByTagName("grid");
  28.         var gmarksgrid=grids[1];
  29.         var seps=document.getElementsByTagName("separator");
  30.         var tabpanels=document.getElementsByTagName("tabpanel");
  31.         //var foldertree=document.getElementById("folder-tree");
  32.  
  33.         tabpanels[0].appendChild(seps[0]);
  34.         tabpanels[0].appendChild(grids[0]);
  35.         tabpanels[0].appendChild(seps[1]);
  36.  
  37.         gBookmarksTree.id="folder-tree2";
  38.         gBookmarksTree.hidden=true;
  39.  
  40.         var newtree=document.createElement("bookmarks-tree");
  41.         newtree.id="folder-tree";
  42.         newtree.flex=1;
  43.         newtree.collapsed=true;
  44.         newtree.selType="single";
  45.         newtree.persist="height";
  46.         newtree.setAttribute("type","folders");
  47.         newtree.setAttribute("rows","6");
  48.     newtree.setAttribute("onselect","selectTreeFolder();");
  49.         gBookmarksTree=tabpanels[0].appendChild(newtree);
  50.         //gBookmarksTree.parentNode.removeChild(gBookmarksTree);
  51.         //tabpanels[0].appendChild(gBookmarksTree);
  52.         /*
  53.          <bookmarks-tree id="folder-tree" flex="1" type="folders" collapsed="true"
  54.                   seltype="single" persist="height" rows="6"
  55.                   onselect="selectTreeFolder();"/>
  56.         */
  57.  
  58.         //The inputField of the keyword textbox disapears when its moved,
  59.         //this is the only way I know of to fix it, since inputField is read only
  60.         var keywordTxt=document.createElement("textbox");
  61.         keywordTxt.setAttribute("id","keyword");
  62.         keywordTxt.setAttribute("oninput","onFieldInput();");
  63.         gKeyword.parentNode.replaceChild(keywordTxt,gKeyword);
  64.         gKeyword=keywordTxt;
  65.  
  66.         var main=document.getElementById("addBookmarkDialog");
  67.         main.setAttribute('ondialogaccept','return doOKSwitch(event);');
  68.  
  69.         fixExpandTree();
  70.  
  71.         //General Stuff
  72.         gmarksAddEditLoad(grids[1]);
  73.         if (!gArg.bBookmarkAllTabs)
  74.             gmarksAddEditBookmark(grids[1],0,gArg.url,gArg.name,gArg.labels,gArg.description);
  75.         else
  76.             gmarksAddBookmarks(grids[1]);
  77.             //setupGMarksForTabs()
  78.         selectLastTab();
  79.     }
  80.     else{
  81.         var tabbox=document.getElementsByTagName("tabbox")[0];
  82.         tabbox.parentNode.removeChild(tabbox);
  83.     }
  84.     sizeToContent();
  85.     setResizable(true);
  86. }
  87.  
  88. function selectLastTab(){
  89.   var selected=gArg.selectedTab;
  90.   try{
  91.     if (!selected)
  92.       selected=prefs.getIntPref('addbookmark.lastSelectedTab');
  93.   }catch(e){
  94.     selected = 0;
  95.   }
  96.   document.getElementsByTagName("tabbox")[0].selectedIndex=selected!=2?selected:1;
  97.   if (selected==0){
  98.     toBoth.setAttribute('disabled','true');
  99.     gName.select();
  100.     gName.focus();
  101.     setTimeout(function(){gName.focus();},1000);
  102.   }
  103.   else{
  104.     toBoth.setAttribute('disabled','false');
  105.     var grid=document.getElementsByAttribute("id","gmarksgrid")[0];
  106.     var txts=grid.getElementsByTagName("textbox");
  107.     var lblBox=txts[2];
  108.     setTimeout(function(){lblBox.focus();},0);
  109.     if (selected==2) toBoth.setAttribute('checked','true');
  110.   }
  111. }
  112.  
  113. //Stops it from shrinking the window when minimizing the tree
  114. //replaces resizeTo with sizeToContent
  115. function fixExpandTree()
  116. {
  117.     var newFunct=expandTree.toString().
  118.       replace("resizeTo(window.outerWidth, window.outerHeight + (willCollapse ? - WSucks : + WSucks));","sizeToContent();");
  119.       //replace('resizeTo(window.outerWidth, window.outerHeight+(willCollapse?-WSucks:+WSucks));', 'sizeToContent();');
  120.     //dump("NewFunct: "+newFunct+"\n");
  121.     eval("expandTree = " + newFunct);
  122.     //dump("ExpandTree: "+expandTree.toString()+"\n");
  123. }
  124.  
  125. function TabSelected(){
  126.     var tabs=document.getElementsByTagName("tabs")[0];
  127.     if (!toBoth) toBoth=document.getElementsByTagName("checkbox")[0];
  128.     if (tabs.selectedIndex==0)
  129.         ffTabSelected();
  130.     else
  131.         gmarksTabSelected();
  132. }
  133.  
  134. //collapse folder tree and get rid of 'new folder' button
  135. function gmarksTabSelected(){
  136.     if (!gBookmarksTree.collapsed){
  137.         showBookmarksTree=true;
  138.         document.documentElement.buttons = "accept,cancel";
  139.         WSucks = gBookmarksTree.boxObject.height;
  140.         gBookmarksTree.collapsed = true;
  141.         var outerwidth=window.outerWidth;
  142.         sizeToContent();
  143.         resizeTo(outerwidth,window.outerHeight);
  144.     }
  145.     toBoth.setAttribute('disabled','false');
  146. }
  147. function ffTabSelected(){
  148.     if (showBookmarksTree){
  149.         setFolderTreeHeight();
  150.         document.documentElement.buttons = "accept,cancel,extra2";
  151.         if (!gBookmarksTree.treeBoxObject.view.isContainerOpen(0))
  152.           gBookmarksTree.treeBoxObject.view.toggleOpenState(0);
  153.         selectFolder(gSelectedFolder);
  154.         gBookmarksTree.focus();
  155.         gBookmarksTree.collapsed = false;
  156.         var outerwidth=window.outerWidth;
  157.         sizeToContent();
  158.         resizeTo(outerwidth,window.outerHeight);
  159.     }
  160.     showBookmarksTree=false;
  161.     toBoth.setAttribute('disabled','true');
  162. }
  163.  
  164. function doOKSwitch(s){
  165.     //dump("doOKSwitch: "+cancelExit+"|"+closeWindow+"\n");
  166.     if (!cancelExit){
  167.         if (closeWindow==true) {
  168.             return true;
  169.         }
  170.         else{
  171.             var selected=document.getElementsByTagName("tabbox")[0].selectedIndex;
  172.             //Save last used tab.
  173.             if (selected==1 && toBoth.checked==true) selected=2;
  174.             prefs.setIntPref('addbookmark.lastSelectedTab',selected);
  175.  
  176.             if (selected==0){//Firefox
  177.                 var ret=onOK();
  178.                 return ret;
  179.             }
  180.             else{//GMarks
  181.                 return doOKGMarks();
  182.             }
  183.         }
  184.     }
  185.     else{
  186.         cancelExit=false;
  187.         return false;
  188.     }
  189. }
  190. function doOKGMarks(){
  191.     var val;
  192.  
  193.     if (gArg.bBookmarkAllTabs){
  194.         val = gmarksSaveBookmarks();
  195.     }else
  196.         val = gmarksSaveBookmark();
  197.  
  198.     if (toBoth.checked){
  199.         onOK();
  200.     }
  201.     return val;
  202. }
  203.  
  204. function gmarksAddBookmarkUnload(){
  205.     var isCollapsed = gBookmarksTree.collapsed;
  206.     //if (!isCollapsed)
  207.     //    gBookmarksTree.setAttribute("height", gBookmarksTree.boxObject.height);
  208.     //gBookmarksTree.collapsed=false;
  209.     //gBookmarksTree.parentNode.removeChild(gBookmarksTree);
  210.     //gBookmarksTree=null;
  211.     gName=null;
  212.     gKeywordRow=null;
  213.     gKeyword=null;
  214.     gExpander=null;
  215.     gMenulist=null;
  216. }
  217. window.addEventListener('load', gmarksAddBookmarkLoad, false);
  218. window.addEventListener('unload',gmarksAddBookmarkUnload,false);
  219.